跳到主要内容

Rust 特征对象

阐述

特征对象可以用于存放实现了某个特征的实例,在运行时可以动态查找方法。

可以通过引用或者 Box<T> 的方法来创建特征对象。特征对象的大小是不固定的,但是它的引用的大小是固定的,由两个指针组成,一个指向对象,一个指向虚表。

只有对象安全的特征才能实现特征对象,要求:

  • 方法的返回类型不能是 Self
  • 方法没有任何泛型参数

实例

一个实现了 Draw 特征的组件的列表,但是具体的类型不知道:

pub struct Screen {
pub components: Vec<Box<dyn Draw>>,
}

性质

相关内容

参考文献